package model

import util "gin-admin-api/utils"

type SysAdmin struct {
	ID         uint       `gorm:"column:id;comment:'主键';primaryKey;NOT NULL" json:"id"`                   // ID
	Username   string     `gorm:"column:username;comment:'用户账号';NOT NULL" json:"username"`                // 用户账号
	Password   string     `gorm:"column:password;comment:'密码';NOT NULL" json:"password"`                  // 密码
	Nickname   string     `gorm:"column:nickname;comment:'昵称'" json:"nickname"`                           // 昵称
	Status     int        `gorm:"column:status;default:1;comment:'状态: 1:启用,2:禁用';NOT NULL" json:"status"` // 状态: 1:启用,2:禁用
	Icon       string     `gorm:"column:icon;comment:'头像'" json:"icon"`                                   // 头像
	Sex        int        `gorm:"column:sex;default:1;comment:'性别, 1:男,2:女'" json:"sex"`                  // 性别
	Email      string     `gorm:"column:email;comment:'邮箱'" json:"email"`                                 // 邮箱
	Phone      string     `gorm:"column:phone;comment:'电话'" json:"phone"`                                 // 电话
	Note       string     `gorm:"column:note;comment:'备注'" json:"note"`                                   // 备注
	CreateTime util.Htime `gorm:"column:create_time;comment:'创建时间'" json:"createTime"`                    // 创建时间
}

func (SysAdmin) TableName() string {
	return "sys_admin"
}

// AddSysAdminDto 新增参数
type AddSysAdminDto struct {
	RoleId   uint   `json:"roleId" validate:"required"`   // 角色id
	Username string `json:"username" validate:"required"` // 用户账号
	Password string `json:"password" validate:"required"` // 密码
	Nickname string `json:"nickname" validate:"required"` // 昵称
	Status   int    `json:"status" validate:"required"`   // 状态: 1:启用,2:禁用
	Sex      int    `json:"sex"`                          // 性别
	Email    string `json:"email" validate:"required"`    // 邮箱
	Phone    string `json:"phone" validate:"required"`    // 电话
	Note     string `json:"note"`                         // 备注
}

// SysAdminInfo 根据id查询用户
type SysAdminInfo struct {
	ID       uint   `json:"id"`       // id
	RoleId   uint   `json:"roleId"`   // 角色id
	Username string `json:"username"` // 用户账号
	Nickname string `json:"nickname"` // 昵称
	Status   int    `json:"status"`   // 状态: 1:启用,2:禁用
	Sex      int    `json:"sex"`      // 性别
	Email    string `json:"email"`    // 邮箱
	Phone    string `json:"phone"`    // 电话
	Note     string `json:"note"`     // 备注
}

// UpdateSysAdminDto 修改参数
type UpdateSysAdminDto struct {
	ID       uint   `json:"id" validate:"required"`       // id
	RoleId   uint   `json:"roleId" validate:"required"`   // 角色id
	Username string `json:"username" validate:"required"` // 用户账号
	Nickname string `json:"nickname" validate:"required"` // 昵称
	Status   int    `json:"status" validate:"required"`   // 状态: 1:启用,2:禁用
	Sex      int    `json:"sex"`                          // 性别
	Email    string `json:"email" validate:"required"`    // 邮箱
	Phone    string `json:"phone" validate:"required"`    // 电话
	Note     string `json:"note"`                         // 备注
}

// SysAdminIdDto id参数
type SysAdminIdDto struct {
	ID uint `json:"id"` // id
}

// UpdateSysAdminStatusDto 设置状态参数
type UpdateSysAdminStatusDto struct {
	ID     uint `json:"id"`     // id
	Status int  `json:"status"` // 状态: 1:启用,2:禁用
}

// ResetSysAdminPasswordDto 重置密码参数
type ResetSysAdminPasswordDto struct {
	ID       uint   `json:"id"`       // id
	Password string `json:"password"` // 密码
}

// SysAdminVo 系统用户对象
type SysAdminVo struct {
	ID         uint       `json:"id"`         // id
	Username   string     `json:"username"`   // 用户账号
	Nickname   string     `json:"nickname"`   // 昵称
	Status     int        `json:"status"`     // 状态: 1:启用,2:禁用
	Icon       string     `json:"icon"`       // 头像
	Sex        int        `json:"sex"`        // 性别
	Email      string     `json:"email"`      // 邮箱
	Phone      string     `json:"phone"`      // 电话
	Note       string     `json:"note"`       // 备注
	RoleName   string     `json:"roleName"`   // 角色名称
	CreateTime util.Htime `json:"createTime"` // 创建时间
}

// JwtAdmin 鉴权用户结构体
type JwtAdmin struct {
	ID         uint   `json:"id"`         // id
	Username   string `json:"username"`   // 用户账号
	Nickname   string `json:"nickname"`   // 昵称
	Status     int    `json:"status"`     // 状态: 1:启用,2:禁用
	Icon       string `json:"icon"`       // 头像
	Email      string `json:"email"`      // 邮箱
	Phone      string `json:"phone"`      // 电话
	Note       string `json:"note"`       // 备注
	ExpireTime int64  `json:"expireTime"` // 过期时间
}

// LoginDto 登录参数
type LoginDto struct {
	Username string `json:"username" validate:"required"` // 用户名
	Password string `json:"password" validate:"required"` // 密码
}
